﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DTS
{
    class SpolkaController
    {
        Dictionary<String, Spolka> spolki;

        public SpolkaController()
        {
            spolki = new Dictionary<string, Spolka>();
        }
        public bool AddSpolka(String symbol,Spolka dane)
        {
            if (spolki.ContainsKey(symbol)) return false;
            spolki.Add(symbol, dane);
            return true;
        }
        public bool AddAllSpolka(List<Spolka> dane)
        {
            foreach (Spolka tmp in dane)
            {
                if (!spolki.ContainsKey(tmp.GetSymbol()))
                    spolki.Add(tmp.GetSymbol(), tmp);
            }
            return true;
        }
        public List<Spolka> getAllSpolki()
        {
            if (spolki.Count < 100) return null;
            return new List<Spolka>(spolki.Values);
        }
        public bool updateSpolka(String symbol, Spolka dane)
        {
            if (spolki.ContainsKey(symbol))
            {
                spolki.Add(symbol, dane);
                return true;
            }
            spolki.Remove(symbol);
            spolki.Add(symbol, dane);
            return true;
        }
        public Spolka getSpolka(String symbol)
        {
            if (!spolki.ContainsKey(symbol)) return null;
            return spolki[symbol];
        }
        public List<Spolka> getSpolkaSektor(String sektor)
        {
            List<Spolka> toRet = new List<Spolka>(spolki.Values);
            toRet = toRet.FindAll(s => s.GetSektor().ToLower().Contains(sektor.ToLower()));
            return toRet;
        }
        public List<Spolka> getSpolkaKapitalizacja(Double min, Double max)
        {
            List<Spolka> toRet = new List<Spolka>(spolki.Values);
            toRet = toRet.FindAll(s => s.GetKapitalizacja() >= min && s.GetKapitalizacja() <= max);
            return toRet;
        }
        public List<Spolka> findSpolka(String ciag)
        {
            List<Spolka> toRet = new List<Spolka>(spolki.Values);
            toRet = toRet.FindAll(s => s.GetPelnaNazwa().ToLower().Contains(ciag.ToLower()));
            return toRet;
        }
        public int getCount() { return spolki.Count; }
    }
}
